
namespace ShoppingCart.Business.Logic
{
	using System;
	using System.Collections.Generic;
	using ShoppingCart.Business.Entity;
	using ShoppingCart.DataAccess;

	/// <summary>
	/// Represents the Manager of Producto.
	/// </summary>
	[Serializable]
	public class ProductoManager : Singleton<ProductoManager>
	{
		#region Methods

		/// <summary>
		/// Selects all records from the Producto table.
		/// </summary>
		public IList<Producto> Listar()
		{
			try
			{
				return ProductoData.Instancia.Listar();
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Selects a single record from the Producto table.
		/// </summary>
		public Producto Obtener(int idProducto)
		{
			try
			{
				return ProductoData.Instancia.Obtener(idProducto);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Selects all records from the Producto table by a foreign key.
		/// </summary>
		public IList<Producto> ListarPorIdLinea(int idLinea)
		{
			try
			{
				return ProductoData.Instancia.ListarPorIdLinea(idLinea);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Saves a record to the Producto table.
		/// </summary>
		public int Agregar(Producto producto)
		{
			try
			{
				return ProductoData.Instancia.Agregar(producto);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Updates a record in the Producto table.
		/// </summary>
		public bool Modificar(Producto producto)
		{
			try
			{
				return ProductoData.Instancia.Modificar(producto);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the Producto table by its primary key.
		/// </summary>
		public bool Eliminar(int idProducto)
		{
			try
			{
				return ProductoData.Instancia.Eliminar(idProducto);
			}
			catch (Exception) { throw; }
		}

		/// <summary>
		/// Deletes a record from the Producto table by a foreign key.
		/// </summary>
		public void EliminarPorIdLinea(int idLinea)
		{
			try
			{
				ProductoData.Instancia.EliminarPorIdLinea(idLinea);
			}
			catch (Exception) { throw; }
		}

		#endregion
	}
}
